#ifndef CONTEXT_H
#define CONTEXT_H

#include "frame.h"
#include "frame_control.h"
#include "frame_drive.h"
#include "frame_state.h"
#include "joystick_device.h"
#include "key_device.h"
#include "qtmetamacros.h"
#include "udp_backend.h"
#include <QObject>

class Context : public QObject
{
    Q_OBJECT
  public:
    JoystickDevice *js;
    KeyDevice *key;
    UDPBackend *udp;

    FrameDrive *frameDrive;
    FrameControl *frameControl;
    FrameState *frameState;

    unsigned short port;
    QHostAddress address;

  public:
    explicit Context(QObject *parent = nullptr);
  signals:
    void OnFrameChangedByRemote(const QString &changedFrameName);
};

#endif // CONTEXT_H
